Point-in-Time Recovery (PITR) কনফিগারেশন

Backup এবং Restore পদ্ধতি - পোস্টগ্রিএসকিউএল (PostgreSQL) - Database Tutorials

218

Point-in-Time Recovery (PITR) হল PostgreSQL এর একটি শক্তিশালী বৈশিষ্ট্য যা ডেটাবেসের একটি নির্দিষ্ট সময়ে ডেটা পুনরুদ্ধার করতে সাহায্য করে। এটি সাধারণত ব্যাকআপ এবং ট্রানজেকশন লগ (WAL - Write-Ahead Logging) ব্যবহারের মাধ্যমে কার্যকর হয়। PITR ব্যবহৃত হয় যখন আপনাকে একটি নির্দিষ্ট সময়ের পরে ডেটাবেস পুনরুদ্ধার করতে হয়, যেমন যদি কোনো ডেটা মুছে যায় বা ভুল ডেটা ইনসার্ট হয়ে যায়।

PITR কনফিগারেশন করা সাধারণত দুইটি প্রধান পদক্ষেপের মাধ্যমে করা হয়:

  1. Base Backup: একটি স্ন্যাপশট বা ব্যাকআপ তৈরি করা যা সিস্টেমের বর্তমান অবস্থা প্রতিফলিত করে।
  2. WAL Archiving: ট্রানজেকশন লগগুলি সংরক্ষণ করা, যাতে সেগুলি ব্যবহার করে নির্দিষ্ট সময়ের পরে ডেটাবেস পুনরুদ্ধার করা যায়।

1. PITR কনফিগারেশনের জন্য প্রস্তুতি

a. Base Backup তৈরি করা

Base Backup হল ডেটাবেসের বর্তমান অবস্থা বা স্ন্যাপশট যা পরে পুনরুদ্ধার করা হবে।

  1. Pg_basebackup ব্যবহার করে Base Backup তৈরি করা:

    PostgreSQL pg_basebackup টুল ব্যবহার করে Base Backup তৈরি করা যায়। এটি ডেটাবেসের একটি সম্পূর্ণ ব্যাকআপ তৈরি করে এবং ট্রানজেকশন লগগুলি সংগ্রহ করে। এটি ব্যাকআপ প্রক্রিয়া সহজতর করে।

    pg_basebackup -D /path/to/backup_directory -Ft -z -P
    

    এখানে:

    • -D: ব্যাকআপের জন্য ডিরেক্টরি নির্ধারণ করে।
    • -Ft: টার্বাল আর্কাইভ ফরম্যাট ব্যবহার করে ব্যাকআপ তৈরি করে।
    • -z: ব্যাকআপ ফাইলটি জিপ করে।
    • -P: প্রগ্রেস বার দেখানোর জন্য।
  2. Backups Directory: ব্যাকআপগুলি কোথায় রাখা হবে তার জন্য একটি ডিরেক্টরি তৈরি করতে হবে। উদাহরণ:

    mkdir -p /var/lib/postgresql/backups
    pg_basebackup -D /var/lib/postgresql/backups -Ft -z -P
    
  3. PostgreSQL Configuration: Base Backup এর আগে আপনার PostgreSQL কনফিগারেশনটি সঠিকভাবে সেট করতে হবে। /etc/postgresql/{version}/main/postgresql.conf ফাইলে নিম্নলিখিত কনফিগারেশন পরিবর্তন করুন:

    wal_level = replica
    archive_mode = on
    archive_command = 'cp %p /path_to_archive/%f'
    

    এখানে:

    • wal_level = replica: ট্রানজেকশন লগ তৈরি করতে বাধ্য করে।
    • archive_mode = on: WAL আর্কাইভিং সক্ষম করে।
    • archive_command: আর্কাইভ করা ট্রানজেকশন লগগুলি সংরক্ষণ করতে কাস্টম কমান্ড নির্ধারণ করা হয়।

b. WAL Archiving

WAL (Write-Ahead Logging) ট্রানজেকশন লগগুলি ট্রানজেকশন ইনসার্ট, আপডেট, বা ডিলিট হওয়ার পর ডেটাবেসে সঞ্চিত ডেটাকে সংরক্ষণ করে। PITR এ সফলভাবে কাজ করার জন্য, WAL আর্কাইভিং সেটআপ করা আবশ্যক।

  1. Archive Directory: WAL আর্কাইভের জন্য একটি ডিরেক্টরি তৈরি করুন যেখানে ট্রানজেকশন লগ সংরক্ষিত হবে:

    mkdir -p /path_to_archive
    
  2. PostgreSQL Configuration: postgresql.conf ফাইলে WAL আর্কাইভিং সিস্টেম কনফিগার করুন:

    archive_mode = on
    archive_command = 'cp %p /path_to_archive/%f'
    

    এখানে archive_command ট্রানজেকশন লগ ফাইলের জন্য কমান্ড নির্ধারণ করে।


2. PITR জন্য Recovery Configuration

a. recovery.conf ফাইল তৈরি করা

PostgreSQL এ PITR কনফিগারেশন করার জন্য recovery.conf ফাইলের প্রয়োজন হয়। এটি ডেটাবেসের জন্য পুনরুদ্ধারের সময় কাঙ্ক্ষিত সেটিংস নির্ধারণ করে।

  1. recovery.conf ফাইল তৈরি: recovery.conf ফাইলটি ব্যাকআপের ডিরেক্টরিতে রাখা উচিত। আপনি এই ফাইলটিতে নির্দিষ্ট করে দিতে পারেন যে কবে থেকে ডেটাবেস পুনরুদ্ধার করতে হবে এবং WAL এর আর্কাইভ ডিরেক্টরি কোথায়।

    উদাহরণস্বরূপ:

    restore_command = 'cp /path_to_archive/%f %p'
    recovery_target_time = '2023-11-10 15:30:00'  -- আপনার কাঙ্ক্ষিত সময় উল্লেখ করুন
    

    এখানে:

    • restore_command: এটি WAL ফাইলগুলিকে পুনরুদ্ধার করার জন্য ব্যবহৃত কমান্ড।
    • recovery_target_time: আপনাকে যে সময়ে পুনরুদ্ধার করতে হবে, সেই সময় নির্ধারণ করে।
  2. recovery.conf ফাইল স্থাপন: recovery.conf ফাইলটি আপনার PostgreSQL ডেটাবেসের ডিরেক্টরিতে রাখুন:

    cp recovery.conf /var/lib/postgresql/data
    

b. Restarting PostgreSQL

  1. PostgreSQL পুনরায় চালু করা: পুনরুদ্ধার প্রক্রিয়া শুরু করতে PostgreSQL সার্ভার পুনরায় চালু করুন:

    pg_ctl restart -D /var/lib/postgresql/data
    
  2. Recovery Process: PostgreSQL ট্রানজেকশন লগ থেকে ডেটা পুনরুদ্ধার করবে এবং পুনরুদ্ধার প্রক্রিয়া শেষ হলে recovery.conf ফাইলটি স্বয়ংক্রিয়ভাবে মুছে ফেলবে।

3. PITR প্রক্রিয়া শেষে

a. Recovery Monitoring

ডেটাবেস পুনরুদ্ধার প্রক্রিয়ার সময়, PostgreSQL এর লগ ফাইল চেক করা গুরুত্বপূর্ণ, যাতে নিশ্চিত হওয়া যায় যে সমস্ত WAL লগ ফাইল পুনরুদ্ধার করা হয়েছে।

tail -f /var/log/postgresql/postgresql.log

b. Verifying the Recovery

পুনরুদ্ধার সফল হলে, ডেটাবেসে সেই নির্দিষ্ট সময়ে উপস্থিত ডেটা যাচাই করুন:

SELECT * FROM orders WHERE order_date <= '2023-11-10 15:30:00';

এটি নিশ্চিত করবে যে, পুনরুদ্ধারটি সঠিকভাবে হয়েছে এবং আপনি কাঙ্ক্ষিত সময়ে ডেটাবেসের অবস্থান ফিরে পেয়েছেন।


Conclusion

Point-in-Time Recovery (PITR) হল একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার যা ডেটাবেসের নির্দিষ্ট সময়ের অবস্থা পুনরুদ্ধার করতে সাহায্য করে। Base Backup এবং WAL Archiving ব্যবহার করে PostgreSQL এ PITR কনফিগারেশন করা যায়। এটি আপনাকে ডেটাবেসে পূর্বের অবস্থায় ফিরে যেতে সাহায্য করে, যেমন যদি কোনো ভুল তথ্য ইনসার্ট হয়ে যায় বা ডেটা ক্ষতি হয়ে যায়। PITR ব্যবহারের মাধ্যমে আপনি একটি নির্দিষ্ট সময়ের পরে ডেটাবেস পুনরুদ্ধার করতে পারেন এবং এর কার্যকরী প্রয়োগ সিস্টেমের স্থায়িত্ব ও নির্ভরযোগ্যতা নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...